"""
目的 :学习python和mongo交互  实现增删改查功能 节省存储数据的时间  提升开发的效率+









pip install pymongo
交互流程
1.创建连接对象
2.通过连接对象 指定数据库   创建数据库对象
3.通过数据库对象 指定集合  collections
4.使用集合 操作文档    增删改查
5.关闭连接对象
6379 redis数据库    3306  >>

"""
import pymongo

# 1.创建连接对象
# mongo数据库的端口 默认是 27017
conn = pymongo.MongoClient(host="localhost", port=27017)
# 2.通过连接对象 指定数据库   创建数据库对象
db = conn["bili_data"]
# 3.通过数据库对象 指定集合  collection   有则使用集合  无责创建
collection = db["danmu2"]
# 4.使用集合 操作文档    增删改查


# 插入单条数据
# collection.insert_one({"name": "你干嘛", "sex": "男", "age": 19})
# 插入多条
# collection.insert_many([
#     {"name": "李四", "sex": "男", "age": 27},
#     {"name": "王五", "sex": "女", "age": 36},
#     {"name": "马六", "sex": "男", "age": 59},
#     {"name": "杰瑞", "sex": "女", "age": 98},
#     {"name" : "陈公子", "sex" : "男", "age" : 101},
#     {"name" : "ji你太美", "sex" : "男", "age" : 38}])

# 删除数据
# 删除一条
# collection.delete_one({"name":"你干嘛"})
# 删除多条
# collection.delete_many({"name":"你干嘛"})

# 查数据

"""
需求  采集某直播间的弹幕信息！
张三   整得好 
张三   整得好 
张三   整得好
李四   好活当赏  
李四   整得好

书籍mongo的灵活更新写法    
机制 如果通过条件没有查询到数据 那么就新建数据，如果通过条件查到了数据  那么就更新数据 （可以追加新字段）
 “张三" 发了 "整的好"
如果 检测到 “张三" 发了 "整的好" >>> 没有 新建一条数据保存！1    有>>>> 更新 在这里相当于没有插入   
如果 检测到 “李四" 发了 "好活当赏" >>> 没有 新建一条数据保存！1    有>>>> 更新 在这里相当于没有插入  
如果 检测到 “李四" 发了 "整得好" >>> 没有 新建一条数据保存！1    有>>>> 更新 在这里相当于没有插入 

最终就实现了 采集的所有数据不会重复>>>  

"""
# data={"name":"李四","content":"好活当赏"}
# 参数1条件   参数2 要修改的内容  参数3 upsert
# collection.update_one({"name":"李四","content":"好活当赏"},{"$set":{"name":"张三","content":"好活当赏"} },upsert=True)
# upsert=False 代表 匹配不到文档不插入新的数据
# upsert=True  如果条件没有查询到数据 就新建数据  如果通过条件查询到数据 那么就更新数据！


# datas = collection.find()
# print(datas)  # <pymongo.cursor.Cursor object at 0x0000013061E93608>  包含了数据的对象 >>> 通过遍历 >>>得到数据
# for data in datas:
#     print(data)
# 5.关闭连接对象
conn.close()
